安装 pnpm
删除 node_modules
shell
npx npkill添加 preinstall hook
json
{
"scripts": {
"preinstall": "npx only-allow pnpm"
// ...
}
}[可选]创建 pnpm-workspace.yaml 并写入以下内容
TIP
- 这里涉及到一个名为
monorepo的软件开发策略
yaml
packages:
# include packages in subfolders (change as required)
- "apps/**"
# all packages in direct subdirs of packages/
- "packages/**"
# exclude packages that are inside test directories
- "!**/test/**"将 workspaces 从 package.json 中删除
[可选]使用 pnpm add 安装依赖有警告
- 执行
pnpm add时增加-w选项
INFO
考虑到某些第三方会自主执行 pnpm add,此时不好控制 cli 选项,所以推荐第二种方案
- 考虑到
monorepo,这里应该不是最佳实践
- 根目录下创建
.npmrc文件并写入ignore-workspace-root-check=true
依据 package-lock.json 生成 pnpm-lock.yaml
shell
pnpm import删除 package-lock.json
shell
rm -f package-lock.json使用 pnpm 安装依赖
shell
# 别名:pnpm i
pnpm install将 npm run xxx 替换为 pnpm xxx
json
{
"scripts": {
"test": "npm run test",
"test": "pnpm test"
}
}